De under den senaste tiden uppmärksammade säkerhetsproblem som finns hos bankkort tillverkade enligt EMV-standarden kan knappast ha undgått någon. Kortfattat så kan man med hjälp av en manipulerad kortterminal instruera kortchipet att inte kräva PIN-kod för den aktuella transaktionen. Ett stulet kort kan på så vis användas utan kunskap om koden. Eftersom huvuddelen av de svenska terminalerna kopplar upp sig mot kortinnehavarens bank för att verifiera kortgiltighet är detta i praktiken inte ett så stort problem (inom Sverige).
I sig är problemet kanske inte så revolutionerande, IT-säkerhetsproblem finns det gott om. Det som är fascinerande är de systemproblem som döljer sig bakom. Ofta skyller man säkerhetsproblem på ovilja att betala för den bästa lösningen. Här har den resursstarka bank- och kortindustrin satsat mycket stora belopp på att ta fram EMV men ändå når man inte ända fram. Vad var det egentligen som gick fel och finns det något att lära sig här?
För att kasta lite ljus över detta har jag försökt identifiera några tankevurpor som man gjort på vägen och koppla dem mot vanliga problem som uppkommer vid säkerhetsdesign. Man kan urskilja flera separata problem:
Det första misstaget är ett uttryck för ett av de vanligaste problemen vid systemdesign, nämligen obefogad förtroende för att externa komponenter kommer att bete sig som förväntat. Tanken att en illasinnad kortterminal skulle välja att inte autentisera kortanvändaren har förmodligen inte slagit den som skrev kommunikationsprotokollet. Läxan är att inte lita på att externa komponenter kommer att bete sig som förväntat och alltid betrakta indata med en sund portion misstro.
Vad gäller det andra problemet så är det inte första gången bankindustrin använder en lösning utanför sitt sammanhang (någon som hört talas om kreditkortsbetalningar på internet). Här är skillnaderna i användning dock mer subtila. Varje av de ingående specifikationerna är helt korrekt inom sin domän men ingen av dem reglerar de bakomliggande kontroller som krävs för att skapa ett säkert sammansatt system. Således har man landat i en de facto-användning som inte överrensstämmer med ursprungstanken. Problemen hade kunnat undvikas om man initialt tänkt igenom hela systemarkitekturen och sedan kontinuerligt verifierat att systemet används som det är tänkt.
Den sista läxan är att inte stirra sig blind på långa nyckellängder och användning av starka autentiseringsmetoder. Om inte gränsytor och oväntat användarbeteende hanteras på ett bra sätt hjälper ingen kryptering i världen. Ett typiskt exempel på detta tänk är Schweiz som övertygades att köpa in kvantkryptering för säker kommunikation mellan vallokaler och den centrala databasen vid valet 2007. Det finns många kända säkerhetsproblem med elektronisk rösthantering huvudsakligen centrerade kring mjukvaran i själva rösträknaren varav kvantkryptering löser exakt inget. En angripare kommer alltid välja den enklaste vägen och angripa den svagaste länken i en kedja. Istället för att se över hela systemet gjorde man enskild länk mycket säker. Självklart försämrar detta inte systemet men punktanvändning av mycket säker teknik kan lätt skapa en falsk känsla av säkerhet.
Det går ganska lätt att dra paralleller från diskussionen ovan till andra utmaningar vi står inför på IT-säkerhetsområdet. Fler och fler tjänster exponeras över internet och vi måste designa och bygga autentiserings- och samarbetslösningar som fungerar på ett säkert sätt hela vägen. Många organisationer står idag i begrepp att implementera eller köpa in lösningar för tvåfaktors-autentisering, identitetsfederationer, eller för all del molntjänster. I många fall uppkommer en helt ny typ av problematik där en organisation plötsligt blir beroende av externa parters säkerhetslösningar. I sådana fall är det ännu viktigare att ha ett helhetstänkande kring systemet, analysera samtliga gränsytor där känslig information exponeras samt inte lita på att extern indata är godartad.
Det enda vi bevisligen har lärt oss av historien är att det svårt att lära sig av historien men det skadar ju inte att åtminstone försöka. Så när vi nu bygger nästa generations autentiseringslösningar tycker jag att vi ska ta chansen och tänka lite längre än den som bestämde sig för att det bästa sättet att godkänna en betalning över internet är kunskap om ett 16 siffror långt kortnummer.
© 2010 Andreas Nilsson, Certezza AB
Andreas Nilsson